5章 HTTPサーバとHTTPクライアント
作業ログ
.editorで編集する
$ node
$ .editor
1つ目をコピペ
ctrl + Dで終了
$ .editor
2つ目をコピペ
ctrl + Dで終了
1つ目
req: 読み込みストリーム
res: 書き込みストリーム
/api/todosへのGETリクエストに対し,
ToDoの配列をJSON文字列化JSON.stringify()して,
書き込みストリームのend()メソッドでレスポンスに書き込む
(リクエストにJSONなどのリクエストボディが含まれる場合には,通常の読み込みストリームと同様の方法で取得できる)
作成したサーバインスタンスのlisten()メソッドを実行して,
引数に指定したポートからリクエストを待機し,
listen()メソッドの戻り値はサーバインスタンスそのもの。
code:01.js
// ToDo一覧
const todos = [
{id: 1, title: "ネーム", completed: false},
{id: 2, title: "下書き", completed: true}
]
// HTTPサーバの初期化
const server = http.createServer((req, res) => {
// リクエストのURLやHTTPメソッドに応じて適切なレスポンスを返す
if (req.url === "/api/todos") {
if (req.method === "GET") {
// GETメソッドの場合,全ToDoをJSON形式で返す
res.setHeader("Content-Type", "application/json")
return res.end(JSON.stringify(todos))
}
// GET以外のHTTPメソッドはサポートしたんため405(NotFound)
res.StatusCode = 405
} else {
// api.todos以外のURLはないので404(Not Found)
res.StatusCode = 404
}
res.end()
}).listen(3000) //3000ポートでリクエストを待機
2つ目
code:02.js
let responseData = ""
console.log("statusCode", res.statusCode)
res.on("data", chunk => responseData += chunk)
res.on("end", ()=> console.log("responseData", JSON.parse(responseData)))
}).end()
request()メソッドの引数
第一引数: URL
第二引数: レスポンスのハンドラ
(メモが面倒になったから,一旦やめて先に進む)
結果
https://scrapbox.io/files/62ef411a2e0bcc001dabf06f.png
npm installの仕組みがこのサイトでかなり分かった。
とりあえずgit cloneして,npm i してnpm startして,localhostにアクセスしたら動いた。
https://scrapbox.io/files/62ef799799c188001fcb8428.png